package com.lst.tools.quartz.service;

import com.lst.tools.basics.function.OneParamFunction;
import com.lst.tools.quartz.vo.EditJobParam;
import com.lst.tools.quartz.vo.TaskInfoVo;
import org.quartz.JobDataMap;
import org.quartz.SchedulerException;

import java.util.List;

/**
 * @author: Frank
 * @date: 2019/09/24 13:51
 * @version: V1.0
 */
public interface ITaskService {

    /**
     * 获取任务列表
     *
     * @return
     */
    List<TaskInfoVo> list();

    /**
     * 保存定时任务
     *
     * @param editJobParam 请求参数
     * @param fun          对JobDetail进行设置
     */
    void addJob(EditJobParam editJobParam, OneParamFunction<Void, JobDataMap> fun);

    /**
     * 修改定时任务
     *
     * @param editJobParam 请求参数
     * @param fun          对JobDetail进行设置
     */
    void edit(EditJobParam editJobParam, OneParamFunction<Void, JobDataMap> fun);

    /**
     * 删除定时任务
     *
     * @param jobClassName job包名加类名
     * @param jobGroup     job组
     */
    void delete(String jobClassName, String jobGroup);

    /**
     * 暂停定时任务
     *
     * @param jobClassName job包名加类名
     * @param jobGroup     job组
     */
    void pause(String jobClassName, String jobGroup);

    /**
     * 重新开始任务
     *
     * @param jobClassName job包名加类名
     * @param jobGroup     job组
     */
    void resume(String jobClassName, String jobGroup);

    /**
     * 验证任务是否存在
     *
     * @param jobClassName job包名加类名
     * @param jobGroup     job组
     * @return
     * @throws SchedulerException
     */
    boolean checkExists(String jobClassName, String jobGroup) throws SchedulerException;
}
